Reducing the scope of a synchronized block in Java unexpectedly corrupts my ArrayList why is that th